package com.mine.yyb.modules.sys.dao;

import java.util.List;
import java.util.Map;

import com.mine.yyb.common.utils.exception.MineException;
import com.mine.yyb.common.utils.jdbc.MinePagination;
import com.mine.yyb.modules.sys.vo.OrderVO;

/**
 * <pre>
 * <一句话功能简述>
 * <功能详细描述>
 * </pre>
 * 
 * @author xuganhua
 * @version [版本号, 2015年12月28日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface IOrderDao
{
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 保存订单信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月28日]
     * @param orderVO
     * @return
     * @see [类、类#方法、类#成员]
     */
    public int save(OrderVO orderVO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 修改订单信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月9日]
     * @param orderVO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public int update(OrderVO orderVO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询符合条件的订单信息
     *
     * <功能详细描述></br>
     * 
     * @param paramsMap
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public List<OrderVO> queryOrderList(Map<String, Object> paramsMap)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询符合条件的订单信息
     * 
     * <功能详细描述></br>
     * 
     * @param orderVO
     * @param startDate
     * @param endDate
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public List<OrderVO> queryOrderList(OrderVO orderVO, String startDate, String endDate)
        throws MineException;
    
    public List<OrderVO> queryQtOrderList(OrderVO orderVO, String startDate, String endDate)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询符合条件的订单信息
     *
     * <功能详细描述></br>
     * 
     * @param paramsMap
     * @param startDate
     * @param endDate
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public List<OrderVO> queryOrderListTo(OrderVO orderVO, String startDate, String endDate)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 分页查询订单信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月3日]
     * @param orderVO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<OrderVO> queryOrderList(OrderVO orderVO, int sEcho, int iDisplayStart, int iDisplayLength,
        String startDate, String endDate)
        throws MineException;
    
    public MinePagination<OrderVO> queryQtOrderList(OrderVO orderVO, int sEcho, int iDisplayStart, int iDisplayLength,
        String startDate, String endDate)
        throws MineException;
    
    /**
     * <一句话功能简述>
     * 
     * 分页查询订单信息
     *
     * <功能详细描述>
     * 
     * @param paramsMap
     * @param sEcho
     * @param iDisplayStart
     * @param iDisplayLength
     * @param startDate
     * @param endDate
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<OrderVO> queryOrderListTo(OrderVO orderVO, int sEcho, int iDisplayStart, int iDisplayLength,
        String startDate, String endDate)
        throws MineException;
    
    public MinePagination<OrderVO> queryChildRebateList(OrderVO orderVO, int sEcho, int iDisplayStart,
        int iDisplayLength, String startDate, String endDate)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 条件求和查询
     *
     * <功能详细描述></br>
     * 
     * @param paramsMap
     * @param startDate
     * @param endDate
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public OrderVO querySum(Map<String, Object> paramsMap, String startDate, String endDate)
        throws MineException;
    
    public OrderVO queryQtSum(Map<String, Object> paramsMap, String startDate, String endDate)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 条件求和查询
     *
     * <功能详细描述></br>
     * 
     * @param paramsMap
     * @param startDate
     * @param endDate
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public OrderVO queryAllSum(Map<String, Object> paramsMap, String startDate, String endDate)
        throws MineException;
    
    public OrderVO queryAllSumChildRebate(Map<String, Object> paramsMap, String startDate, String endDate)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询我的佣金
     *
     * <功能详细描述></br>
     * 
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<Map<String, String>> queryRebate(Map<String, Object> paramsMap, int sEcho, int iDisplayStart,
        int iDisplayLength)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 分页查询指定用户的所有下线用户的返利贡献金额
     *
     * <功能详细描述></br>
     * 
     * @param paramsMap
     * @param sEcho
     * @param iDisplayStart
     * @param iDisplayLength
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<Map<String, String>> queryChildRebate(Map<String, Object> paramsMap, int sEcho,
        int iDisplayStart, int iDisplayLength)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询所有用户的佣金
     *
     * <功能详细描述></br>
     * 
     * @param paramsMap
     * @param sEcho
     * @param iDisplayStart
     * @param iDisplayLength
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<Map<String, String>> queryAllRebate(Map<String, Object> paramsMap, int sEcho,
        int iDisplayStart, int iDisplayLength)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 分页查询所有用户的所有下线用户的返利贡献金额
     *
     * <功能详细描述></br>
     * 
     * @param paramsMap
     * @param sEcho
     * @param iDisplayStart
     * @param iDisplayLength
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<Map<String, String>> queryAllChildRebate(Map<String, Object> paramsMap, int sEcho,
        int iDisplayStart, int iDisplayLength)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 查询返利数据 
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年2月17日]
     * @param paramsMap
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public List<Map<String, Object>> queryAllRebate(Map<String, Object> paramsMap)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询所有用户的所有下线用户的返利贡献金额
     *
     * <功能详细描述></br>
     * 
     * @param paramsMap
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public List<Map<String, Object>> queryAllChildRebate(Map<String, Object> paramsMap)
        throws MineException;
    
    public void deleteOrder(OrderVO orderVO)
        throws MineException;
}
